import pandas as pd
import os
import glob
import re
import time
from program.pack.append_df_to_excel import append_df_to_excel

import numpy as np
import warnings

# 忽略警告
warnings.filterwarnings("ignore")

# 列显示不全，进行设置
pd.set_option('display.max_columns', 500)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.width', 180)  # 设置打印宽度(**重要**)


# ----------------按文件进行数据分析---------------

# 按文件名进行聚合统计，
def func_52(data):
    # data['文件名'] = data['文件夹地址'].str.rsplit('\\', expand=True)[0]
    data['时间'] = data['文件名'].str.split('-', expand=True)[0] + '-' + data['文件名'].str.split('-', expand=True)[1] + '-' + \
                 data['文件名'].str.split('-', expand=True)[2]
    data['时间'] = pd.to_datetime(data['时间']).dt.date
    data['设备'] = data['文件名'].str.split('-', expand=True)[3]
    data['文件地址'] = data['文件夹地址'].str.rsplit('\\', expand=True, n=1)[0]
    # data = data.truncate(after='2020-10-16')
    # data = data.truncate(before='2021-05-29')

    list_file = ['姓名', '时间', '文件名']
    data_group = data.groupby(list_file).agg \
        ({'序号o': ['count'],
          '文件名': ['size'],
          'originImage图片数': ['sum'],
          })
    data_group.columns = ['测试组数', '文件夹数量', '原始图片数']
    data_group = data_group.reset_index()
    print(data_group)

    list_file = ['姓名', '时间']
    data_group = data_group.groupby(list_file).agg \
        ({'测试组数': ['sum'],
          '文件名': ['size'],
          '原始图片数': ['sum'],
          })
    data_group.columns = ['测试组数', '文件夹数量', '原始图片数']
    data_group = data_group.reset_index()
    print(data_group)

    data_group = pd.merge(data_group, data[
        ['姓名', '时间', '工作人员', '设备', '文件地址']].drop_duplicates(), how='inner',
                          on=['姓名', '时间'])
    #
    k_columns = ['时间', '姓名', '工作人员', '设备', '测试组数', '原始图片数', '文件夹数量', '文件地址']
    data_group = data_group[k_columns]
    data_group.sort_values(by=['时间', '姓名'], ascending=True, inplace=True)
    data_group = data_group.drop_duplicates(['时间', '姓名', '工作人员', '设备', '测试组数'], 'first')
    return data_group


def main_file(path_out):
    mod_name = '文件名'
    data_50 = func_52(data_0)
    append_df_to_excel(path_out, data_50, sheet_name='train_ok', startcol=0,
                       startrow=0, index=False)  # 第1列 第0行
    print(mod_name, '数据输出成功')


# ----------------5、按文件----------------

# 文件输入位置
paths = r'\\172.18.5.222\data2\minhang_originImage\train\train_ok.xlsx'

data_0 = pd.read_excel(paths, sheet_name='data')

# 文件输出位置
path_out = r'../data/宝怡.xlsx'

if __name__ == "__main__":
    start = time.time()
    main_file(path_out)  # 文件
    # 记录时间
    end = time.time()
    print("代码运行耗时{:.2f}秒".format(end - start))
